Newer
Older
TheVengeance-Project-IADE-Unity2D / Assets / Scripts / NPC / Ranged Slime / RangedSlimeAttack.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RangedSlimeAttack : MonoBehaviour
{

    private GameObject target;
    public GameObject bulletPrefab;
    private RangedSlimeMovement rangedSlimeMovement;
    public float bulletOffset = 2.4f;
    public float bulletSpeed = 5f;
    public float bulletCooldownTime = 7f;
    private float bulletShootTimer = 0;

    // Start is called before the first frame update
    void Start()
    {
        target = GameObject.FindGameObjectWithTag("Player");
        rangedSlimeMovement = FindObjectOfType<RangedSlimeMovement>(); // to access the Player Level file
    }

    // Update is called once per frame
    void Update()
    {
        if ((Vector3.Distance(transform.position, target.transform.position) <= rangedSlimeMovement.maxrange) && (bulletShootTimer <= 0))
        {
            if(rangedSlimeMovement)
            {
                Vector3 playerDirection = target.transform.position - transform.position; // new Vector3(target.transform.position.x, target.transform.position.y, transform.position.z);
                GameObject bullet = Instantiate(bulletPrefab, transform.position + (playerDirection.normalized * bulletOffset), Quaternion.identity);
                bullet.GetComponent<Rigidbody2D>().velocity = playerDirection.normalized * bulletSpeed;
                bulletShootTimer = bulletCooldownTime;
            }
        }
        if (bulletShootTimer >= 0)
        {
            bulletShootTimer -= Time.deltaTime;
        }
    }
}